package com.allwees.bs.module.scm.req;

import com.allwees.bs.core.modelbase.req.Req;
import com.allwees.bs.core.modelbase.validate.ValidateItem;
import com.allwees.bs.module.scm.req.internal.EnteredWarehouseSkuReq;
import lombok.Data;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.util.CollectionUtils;

import java.util.Set;
import java.util.stream.Collectors;

/**
 * 入库请求
 *
 * @author mouhn
 * @since 2020-01-09 17:58
 */
@Data
public class EnteredWarehouseReq extends Req {

    private Set<EnteredWarehouseSkuReq> enteredWarehouseSkus;

    @Override
    public ValidateItem[] getValidateItems() {

        return ArrayUtils.addAll(
                ArrayUtils.addAll(
                        super.getValidateItems(),
                        new ValidateItem(CollectionUtils.isEmpty(enteredWarehouseSkus), "skus can not be blank")
                ),
                validateItems()
        );
    }

    public ValidateItem[] validateItems() {
        ValidateItem[] validateItems = new ValidateItem[0];
        for (EnteredWarehouseSkuReq sku : enteredWarehouseSkus) {
            validateItems = ArrayUtils.addAll(validateItems, sku.validateItems());
        }
        return validateItems;
    }

    public Set<String> getShippingOrderSkuUuids(){
        return enteredWarehouseSkus.stream().map(EnteredWarehouseSkuReq::getShippingOrderSkuUuid).collect(Collectors.toSet());
    }

}

